package com.taotao.merchant.mapper;

import com.taotao.merchant.domain.Coupon;
import com.taotao.merchant.domain.SkuInfo;
import com.taotao.merchant.domain.request.CouponRequest;
import com.taotao.merchant.domain.request.CouponSearchRequest;
import com.taotao.merchant.domain.response.CouponResponse;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CouponMapper {
    /**
    * @Author ZhangYuQi
    * @Description 获取商户发放所有的优惠券
    * @Date 下午6:45 2025/1/13
    * @Param []
    * @return
    */
    List<Coupon> selectAllCoupons(CouponSearchRequest coupon);

    /**
    * @Author ZhangYuQi
    * @Description 根据优惠券id查询优惠券详情信息
    * @Date 下午7:38 2025/1/13
    * @Param [id]
    * @return
    */
    CouponResponse selectCouponById(@Param("id") Long id);

    /**
    * @Author ZhangYuQi
    * @Description 根据优惠券id逻辑删除优惠券
    * @Date 下午8:32 2025/1/13
    * @Param [id]
    * @return
    */
    void updateDelStatusById(@Param("id") Long id);

    /**
    * @Author ZhangYuQi
    * @Description 添加优惠券
    * @Date 下午10:17 2025/1/13
    * @Param [couponRequest]
    * @return
    */
    void insertCoupon(CouponRequest couponRequest);

    /**
    * @Author ZhangYuQi
    * @Description 添加指定sku可用优惠券表
    * @Date 下午10:25 2025/1/13
    * @Param [id, skuIds]
    * @return
    */
    void insertSkuCoupon(@Param("id") Long id, @Param("skuIds") List<Long> skuIds);

    /**
    * @Author ZhangYuQi
    * @Description 获取当前登录商户所有的sku信息
    * @Date 下午8:39 2025/1/14
    * @Param [userId]
    * @return
    */
    List<SkuInfo> selectSkuListByUserId(Long userId);

    /**
    * @Author ZhangYuQi
    * @Description 根据优惠券id查询对应指定sku列表
    * @Date 下午4:01 2025/1/15
    * @Param [id]
    * @return
    */
    List<SkuInfo> selectSkuListByCouponId(Long id);

    /**
    * @Author ZhangYuQi
    * @Description 逻辑删除中间表
    * @Date 下午6:38 2025/1/15
    * @Param [id]
    * @return
    */
    void updateSkuCouponDelStatusById(Long id);
}
